﻿// Copyright richyp 2009
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace Richyp.Bodger
{
    public class ArmouryItem
    {
        public Wargear wargear;
        public int Cost;
        public string UnlockType;

        public override string ToString()
        {
            return wargear.ToString() + " / " + Cost.ToString() + "pts";
        }
    }

    public class Armoury
    {
        public static List<ArmouryItem> CreateFromNode(CodexFile codexFile, XmlNode node)
        {
            foreach (XmlNode childNode in node.ChildNodes)
            {
                if (childNode.Name.ToUpper() == "NAMEDENTRY")
                {
                    ArmouryItem newItem = new ArmouryItem();
                    newItem.wargear = codexFile.GetWargearByName(childNode.InnerText);
                    foreach (XmlAttribute attribute in childNode.Attributes)
                    {
                        if (attribute.Name.ToUpper() == "COST")
                        {
                            newItem.Cost = int.Parse(attribute.InnerText);
                        }
                    }

                    codexFile.Armoury.Add(newItem);
                }
            }
            //    string name = childNode.Name.ToUpper();
            //    string value = childNode.InnerText;
            //    if (name == "ID")
            //    {
            //        unit.ID = int.Parse(value);
            //    }
            //    else if (name == "NAME")
            //    {
            //        unit.Name = value;
            //    }
            //    else if (name == "BASE")
            //    {
            //        int id = -1;
            //        bool isNumber = int.TryParse(value, out id);
            //        if (isNumber)
            //        {
            //            Console.WriteLine(unit.Name + ": Got base unit from ID:" + id);
            //            unit.Base = codexFile.GetBaseUnitByID(id);
            //        }
            //        else
            //        {
            //            Console.WriteLine(unit.Name + ": Got base unit from name:" + value);
            //            unit.Base = codexFile.GetBaseUnitByName(value);
            //        }
            //    }
            //    else if (name == "TYPE")
            //    {
            //        switch (value.ToUpper())
            //        {
            //            case "JUMP":
            //            case "JUMP INFANTRY":
            //            case "JUMPINFANTRY": unit.Type = UnitClass.JumpInfantry; break;
            //            case "BIKE":
            //            case "BIKER":
            //            case "BIKES": unit.Type = UnitClass.Bikes; break;
            //            case "JETBIKE":
            //            case "JETBIKER":
            //            case "JETBIKES": unit.Type = UnitClass.Jetbikes; break;
            //            case "ARTILLERY": unit.Type = UnitClass.Artillery; break;
            //            case "BEAST":
            //            case "BEASTS": unit.Type = UnitClass.Beasts; break;
            //            case "CAVALRY": unit.Type = UnitClass.Cavalry; break;
            //            case "MC":
            //            case "MONSTEROUS CREATURE": unit.Type = UnitClass.MonsterousCreature; break;
            //            case "TANK":
            //            case "TRANSPORT":
            //            case "VEHICLE": unit.Type = UnitClass.Vehicle; break;
            //            case "WALKER": unit.Type = UnitClass.Walker; break;
            //            default: unit.Type = UnitClass.Infantry; break;
            //        }
            //    }
            //    else if (name == "QUANTITY")
            //    {
            //        unit.InitialQuantity = int.Parse(value);
            //    }
            //    else if (name == "MINIMUM")
            //    {
            //        unit.Minimum = int.Parse(value);
            //    }
            //    else if (name == "MAXIMUM")
            //    {
            //        unit.Maximum = int.Parse(value);
            //    }
            //    else if (name == "INCREMENT")
            //    {
            //        unit.Increment = int.Parse(value);
            //    }
            //    else if (name == "COST")
            //    {
            //        unit.BaseCost = int.Parse(value);
            //    }
            //    else if (name == "EXCLUSIVITY")
            //    {
            //        foreach (XmlNode exclusiveNode in childNode.ChildNodes)
            //        {
            //            if (exclusiveNode.Name.ToUpper() == "NAMEDUNIT")
            //            {
            //                unit.exclusiveList.Add(exclusiveNode.InnerText);
            //            }
            //        }
            //    }
            //    else if (name == "OVERRIDES")
            //    {
            //        foreach (XmlNode overrideNode in childNode.ChildNodes)
            //        {
            //            string attrName = overrideNode.Name;
            //            int attrValue = int.Parse(overrideNode.InnerText);
            //            unit.AttributeOverrides.Add(attrName, attrValue);
            //        }
            //    }
            //    else if (name == "EQUIPMENT")
            //    {
            //        foreach (XmlNode equipmentNode in childNode.ChildNodes)
            //        {
            //            string nodeName = equipmentNode.Name.ToUpper();
            //            string nodeValue = equipmentNode.InnerText;
            //            if (nodeName == "DEFAULT")
            //            {
            //                Unit.ParseDefaultWargear(codexFile, unit, equipmentNode);
            //            }
            //            else if (nodeName == "OPTIONS")
            //            {
            //                Unit.ParseOptionalWargear(codexFile, unit, equipmentNode);
            //            }
            //        }
            //    }
            
            return codexFile.Armoury;
        }
    }
}
